类似于iptables的DNAT,但支持多目标转发。客户端和realserver不能再同一个网段,不然直接响应,不走网关
1.模块讲解
客户端发起请求
nat模式中,vip机器进行ip的转发,只改变目的ip
res1和res2需要提供web服务(nginx或者httpd都可以)
2.请求流程图
- 客户端发起请求到vip机器上,vip服务器根据lvs的算法,转发给realserver服务器(改变目的ip为res1或者res2),并记录连接信息,只改变目的ip,源ip不变。
- real-server收到request请求包之后,发现目的ip是自己的ip,处理请求,然后走网关,经过vip
- vip收到reply包后,修改reply包的源ip地址为vip,发给客户端
- 从客户端来的属于本地连接的包,查hash表,然后转发给real-server
- 当client发送完毕以后,此次连接结束或者连接超时,lvs自动从hast表中删除此条记录;
数据包流程如下:
1.客户端发起请求:
|
|
在vip服务器上,eth1网卡上抓包如下:
2.lvs(vip)处理请求:
vip服务器上抓包,在eth1网卡:
|
|
3.realserver处理完请求以后,网关是eth0;在vip的eth0上抓包如下
|
|
4.包经过eth0返回vip服务器,然后经过eth1返回给客户端,源ip改成vip,目的ip不变,
|
|
lvs_nat模式部署过程:
- (确保所有服务器的iptables selinux都是关闭状态)
- 两个realserver上安装nginx或者http提供web服务
- vip上安装ipvsadm
- 在vip服务器上新建lvs_nat.sh脚本,然后执行
|
|
- realserver的网关是eth0,及vip的内网ip
lvs——nat模式的缺点:当流量比较高时,因为所有的流量进入和出去都要进过lvs,所以瓶颈就在lvs上,而dr模式就比这个效果好很多
待解决问题
当访问res2的时候,在111上可以抓到112:80到147.1上的包,如下:
当访问res1时,在111上抓不到112:80到147.1上的包